<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JSON基础</title>
</head>
<body>
    <script>
        // 1. JSON : javascript Object Notation(javascript 对象表示法)
        // 2. JSON 是存储和交换文本信息的语法, (用于 后端 和 前端 数据交换)

            // 是轻量级的文本数据交换格式

        // 3. JSON中允许的值:
            // 1)字符串  2)数字   3)布尔值   4)null   5)数组   6)对象
            // 不支持 的有 : undefined   函数
        // 4. JS中的对象只有JS自己认识,其他语言都不认识

        // 5. JSON格式
            // '{"name":"小王","age":18}'   对象形式
            // '[10,20,'拉拉']'   数组形式

            // 注意属性名必须是双引号, 字符串的值 也是双引号
           

        // 1.创建一个JSON格式
        // 普通js对象
        var obj = {"name":"悟空","age":18,"gender":"男"}
        var obj1 = {name:"悟空",age:18,gender:"男"}
        console.log(obj,obj1);
        //  {name: '悟空', age: 18, gender: '男'} {name: '悟空', age: 18, gender: '男'}   //对象

        // JSON 格式对象 
        var obj2 = '{"name":"悟空","age":18,"gender":"男"}'
        console.log(obj2);  //   {"name":"悟空","age":18,"gender":"男"}  //字符串

        // JSON格式对象 转 js的对象 --- JSON.parse(参数)
        console.log(JSON)
        obj2 = JSON.parse(obj2)
        console.log(obj2);  // {name: '悟空', age: 18, gender: '男'}  // 对象
        console.log(typeof obj2);  // object

        // 遍历 测试是否是对象
        for(var k in obj2){
            console.log(obj2[k]);  //  悟空  18   男
        }



        //  js 格式 转JSON 格式 --- JSON.stringify(参数)
        obj1 = JSON.stringify(obj1)
        console.log(obj1);   // {"name":"悟空","age":18,"gender":"男"} //字符串
        console.log(typeof obj1);  // string


        // ###### 兼容性  eval()  了解
        eval("alert('hello')")

        // JSON 对象 在 IE7以下的 浏览器不支持
        // eval()可以接受一个字符串str作为参数，并把这个参数作为脚本代码来执行
        var obj3 = '{"name":"悟空","age":18,"gender":"男"}';
        console.log(eval("("+obj3+")"));  //  {name: '悟空', age: 18, gender: '男'}  // 对象
        
        data =  new Function("","return "+obj3)
        console.log(data());  //{name: '悟空', age: 18, gender: '男'} 
        
             
    </script>
</body>
</html>